package 面试经典150题.二叉树;

import common.TreeNode;

/**
 * @author tmh
 * @date 2024/6/17 21:37
 * @description
 */
public class T530二叉搜索树的最小绝对差 {
    int min = Integer.MAX_VALUE;
    TreeNode pre;

    //这里用pre指针来记录当前节点的前一个节点
    public int getMinimumDifference(TreeNode root) {
        if (root == null) {
            return 0;
        }
        traversal(root);
        return min;
    }

    public void traversal(TreeNode root) {
        //对于二叉搜索树 采用中序遍历得到的就是一个有序的上升序列
        if (root == null) {
            return;
        }
        //左
        traversal(root.left);
        //中  -- 进行我们的逻辑判断
        if (pre != null) {
            min = Math.min(min, root.val - pre.val);
        }

        //保存前面一个节点的值
        pre = root;
        traversal(root.right);
    }
}
